package com.sgb.jicai.service;

import com.sgb.jicai.entity.BaseCount;
import com.sgb.jicai.entity.CentralizedMiningEntity;
import com.sgb.jicai.entity.CommodityParamValBean;
import com.sgb.jicai.entity.DemanderCompanyPublishBeans;
import com.sgb.jicai.entity.FactoryCentralizedItemEntity;
import com.sgb.jicai.entity.FactoryCentralizedListEntity;
import com.sgb.jicai.entity.FactoryParticipationEntity;
import com.sgb.jicai.entity.FilterEntity;
import com.sgb.jicai.entity.JcChanceEntity;
import com.sgb.jicai.entity.JcCountEntity;
import com.sgb.jicai.entity.JcMyCenterXufangFaQiEntity;
import com.sgb.jicai.entity.JcMyFactoryDataEntity;
import com.sgb.jicai.entity.JcMyFactoryListEntity;
import com.sgb.jicai.entity.JcMyJoinFactoryListEntity;
import com.sgb.jicai.entity.JcMyPriceListEntity;
import com.sgb.jicai.entity.JcMySupervisionEntity;
import com.sgb.jicai.entity.JiCaiGroupBuyingRuleEntity;
import com.sgb.jicai.entity.JiCaiHomeListRequestBean;
import com.sgb.jicai.entity.JiCaiJoinInQuotedPriceCompanyEntity;
import com.sgb.jicai.entity.JiCaiJoinRequireEntity;
import com.sgb.jicai.entity.JiCaiOfferRequireEntity;
import com.sgb.jicai.entity.JiCaiPublishListBean;
import com.sgb.jicai.entity.JiCaiQuotedPriceCompanyEntity;
import com.sgb.jicai.entity.JoinJicaiDetailEntity;
import com.sgb.jicai.entity.OfferAdviceListEntity;
import com.sgb.jicai.entity.OfferGroupBuyingDetailsEntity;
import com.sgb.jicai.entity.SubmitFactoryParticipationEntity;
import com.sgb.jicai.entity.SubmitJoininJicaiEntity;
import com.sgb.jicai.entity.SupplierPublishBean;
import com.sgb.link.entity.BrandEntity;
import com.sgb.link.entity.GetSkuEntity;
import com.sgb.link.entity.InvoiceManagementEntity;
import com.sgb.link.entity.PublicTypeEntity;
import com.swgk.core.view.entity.VideoListEntity;
import com.sgb.link.entity.WebSiteAddressEntity;
import com.swgk.core.base.model.entity.BaseEntity;
import com.swgk.core.base.model.entity.H5ReEntity;
import com.swgk.core.base.model.entity.ListResponse;
import com.swgk.core.base.model.factory.BaseUrlInterceptor;
import com.swgk.core.util.PickSelectEntity;
import com.swgk.core.view.areapopup.AddressEntity;
import com.swgk.core.view.entity.MenuEntity;
import com.swgk.core.view.selection.CommonPopEntity;

import java.util.List;
import java.util.Map;

import okhttp3.RequestBody;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.Headers;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.PartMap;
import retrofit2.http.Query;

/**
 * 集采首页相关接口
 */
public interface CentralizedMiningAPI {

    @FormUrlEncoded
    @POST("v1/app/common/getUrlSetting")
    Call<BaseEntity<H5ReEntity>> getUrlSetting(@Field("param") String param);

    //获取系统中的订单状态
    @GET("v1/app/groupBuy/statuslist")
    Call<BaseEntity<List<PickSelectEntity>>> getStatusList();

    //厂家集采  获取订单状态
    @GET("v1/app/groupBuy/getStatus")
    Call<BaseEntity<List<CommonPopEntity>>> getStatus();

    //获取集采状态（根据集采方式）
    @GET("v1/app/groupBuy/statusNumByType")
    Call<BaseEntity<List<PickSelectEntity>>> getStatusList(@Query("type") String type);

    //获取系统中存在的时间筛选项列表
    @GET("v1/app/groupBuy/dateTimeList")
    Call<BaseEntity<List<CommonPopEntity>>> getDateTimeList();
    @GET("v1/app/groupBuy/dateTimeList")
    Call<BaseEntity<List<PickSelectEntity>>> getDateTimeLists();

    //获取系统中存在的时间筛选项列表
    @GET("v1/app/groupBuy/productSaleRecordBeForeTimeItem")
    Call<BaseEntity<List<PickSelectEntity>>> getFactoryDateTimeList();

    //获取指定行政区划下所有二级市县区
    @GET("v1/app/groupBuy/getSecondAreaCodeList")
    Call<BaseEntity<List<PickSelectEntity>>> getSecondAreaCodeList(@Query("code") String code);


    //获取集采单据详情
    @GET("v1/app/groupBuy/orderDetail")
    Call<BaseEntity<JoinJicaiDetailEntity>> getOrderDetail(@Query("no") String no);

    //提交加盟集采信息
    @POST("v1/app/groupBuy/addParticipant")
    Call<BaseEntity> addParticipant(@Body SubmitJoininJicaiEntity entity);

    //参与报价页面获取报价指导列表
    @GET("v1/app/groupBuy/getOfferAdvice")
    Call<BaseEntity<List<OfferAdviceListEntity>>> getOfferAdvice(@Query("no") String no);

    //进入报价页面获取数据
    @GET("v1/app/groupBuy/getDetailForOffer")
    Call<BaseEntity<OfferGroupBuyingDetailsEntity>> getDetailForOffer(@Query("no") String no, @Query("isAdd") int isAdd);

    //参与报价
    @POST("v1/app/groupBuy/sponsorOffer")
    Call<BaseEntity> sponsorOffer(@Body OfferGroupBuyingDetailsEntity entity);

    //获取集采订单列表
    @POST("v1/app/groupBuy/search")
    Call<BaseEntity<ListResponse<List<CentralizedMiningEntity>>>> getJiCaiLists(@Body JiCaiHomeListRequestBean map);
    //获取视频信息
    @POST("v1/app/collegeV1/getVodListByCondition")
    Call<BaseEntity<VideoListEntity>> getVodListByCondition(@Body Map map);

    //获取集采订单列表
    @POST("v1/app/groupBuy/search")
    Call<BaseEntity<ListResponse<List<CentralizedMiningEntity>>>> getJiCaiList(@Body Map map);

    //首页集采--获取厂家集采列表---  集采1.13启用ES新接口
    @POST("v1/app/groupBuy/indexSaleSearch")
    Call<BaseEntity<FactoryCentralizedListEntity<FactoryCentralizedItemEntity>>> getFactoryCentralizedList(@Body Map map);
    @POST("v1/app/groupBuy/indexSaleSearch")
    Call<BaseEntity<FactoryCentralizedListEntity<FactoryCentralizedItemEntity>>> getFactoryCentralizedLists(@Body JiCaiHomeListRequestBean map);
    @FormUrlEncoded
    @POST("v1/app/material/firstCategory")
    Call<BaseEntity<List<PickSelectEntity>>> getFirstCategory(@Field("areaCode") String areaCode);

    //集采分类接口(使用中)
    @POST("v1/app/groupBuy/groupBuyClassList")
    Call<BaseEntity<List<PickSelectEntity>>> groupBuyClassList();

    // 根据集采类型 获取集采一级分类
    @GET("v1/app/groupBuy/getfirstCategory")
    Call<BaseEntity<List<PickSelectEntity>>> getCMCategory(@Query("groupBuyClass") String areaCode);

    // 根据集采类型、集采一级分类no, 获取二级分类
    @GET("v1/app/groupBuy/getSecondCategory")
    Call<BaseEntity<List<CommonPopEntity>>> getSecondCategory(@Query("parentNo") String id, @Query("groupBuyClass") String groupBuyClass);
    @GET("v1/app/groupBuy/getSecondCategory")
    Call<BaseEntity<List<MenuEntity>>> getSecondCategorys(@Query("parentNo") String id, @Query("groupBuyClass") String groupBuyClass);


    //个人中心——集采管理——我的监督-举报事项
    @GET("v1/app/groupBuy/getAccusationItem")
    Call<BaseEntity<List<PickSelectEntity>>> getAccusationItem();

    //获取需方发起：集采数量
    @GET("v1/app/groupBuy/searchCount")
    Call<BaseEntity<BaseCount>> getXuFangCount(@Query("searchKey") String searchWords);

    //获取厂家集采数量
    @GET("v1/app/groupBuy/productSaleRecordListCount")
    Call<BaseEntity<Integer>> getFactoryCount(@Query("searchKey") String searchWords);

    //获取上一次加盟集采的信息 修改加盟信息时使用
    @GET("v1/app/groupBuy/participantDetail")
    Call<BaseEntity<JoinJicaiDetailEntity>> getParticipantDetail(@Query("no") String no);

    //集采管理-- 个人中心   需方发起 获取我发起的集采列表
    @POST("v1/app/groupBuy/getMyGroupBuyingList")
    Call<BaseEntity<ListResponse<List<JcMyCenterXufangFaQiEntity>>>> getMyGroupBuyingList(@Body Map map);

    //集采管理-- 个人中心  获取我加盟的集采列表  需方部分
    @POST("v1/app/groupBuy/getMyParticipantList")
    Call<BaseEntity<ListResponse<List<JcMyPriceListEntity>>>> getMyParticipantXuFangList(@Body Map map);

    //厂家集采--立即参与--获取立即参与页面详情
    @GET("v1/app/groupBuy/appProductSaleOrderGetProductDetailForAddOrder")
    Call<BaseEntity<List<FactoryParticipationEntity>>> getProductDetailForAddOrder(@Query("productNO") String no);

    //厂家集采--立即参与--提交立即参与信息
    @POST("v1/app/groupBuy/appProductSaleOrderAddOrder")
    Call<BaseEntity> submitParticipationInfo(@Body SubmitFactoryParticipationEntity entity);

    // 需方发起  加盟集采页  加盟规则
    @GET("v1/app/groupBuy/appJoinRequire")
    Call<BaseEntity<JiCaiJoinRequireEntity>> getJoinRequire(@Query("no") String no);

    // 需方发起  参与报价页  报价规则
    @GET("v1/app/groupBuy/appOfferRequire")
    Call<BaseEntity<JiCaiOfferRequireEntity>> getOfferRequire(@Query("no") String no);

    // 需方发起  参与报价页  集采规则
    @GET("v1/app/groupBuy/getGroupBuyingRule")
    Call<BaseEntity<JiCaiGroupBuyingRuleEntity>> getGroupBuyingRule(@Query("no") String no);

    // 需方发起  参与报价页面   加盟单位列表
    @GET("v1/app/groupBuy/groupbuyingParticipantRecordCompanyByGroupbuyingNo")
    Call<BaseEntity<List<JiCaiJoinInQuotedPriceCompanyEntity>>> getJoinInCompanyList(@Query("groupbuyingNo") String groupbuyingNo);

    //需方发起   加盟集采页面   报价单位列表
    @GET("v1/app/groupBuy/appFindOfferListByCompany")
    Call<BaseEntity<List<JiCaiQuotedPriceCompanyEntity>>> getQuotedPriceCompanyList(@Query("no") String groupbuyingNo);
    //用户列表
    @Headers({BaseUrlInterceptor.HEADERS_URL_JC, "tokenType:pc"})
    @GET("v1/app/equimentRent/getCustomerOrgV1")
    Call<BaseEntity<List<JiCaiPublishListBean>>> getUserList();

    //集采获取企业列表
    @GET("v1/app/user/member/getMyCompnayList")
    Call<BaseEntity<List<JiCaiPublishListBean>>> getMyCompanyList();

    //集采获取部门列表
    @GET("v1/app/user/member/getDeptList")
    Call<BaseEntity<List<JiCaiPublishListBean>>> getDeptList(@Query("companyId") String companyId);

    //获取单位
    @GET("v1/app/groupBuy/findUnitList")
    Call<BaseEntity<List<JiCaiPublishListBean>>> getfindUnitList();

    //获取商品类型
    @GET("v1/app/member/customer/getGoodsTreeNodeByProvinceIdV2")
    Call<BaseEntity<List<MenuEntity<MenuEntity<MenuEntity>>>>> getGoodsTreeNodeByProvinceIdV2();

    //供方发起发布
    @POST("v1/app/groupBuy/addProductSale")
    Call<BaseEntity> getaddProductSale(@Body SupplierPublishBean bean);

    //集采保存图片信息
    @POST("v1/app/common/addFiles")
    Call<BaseEntity> getaddFiles(@PartMap Map<String, RequestBody> files);

    //需方发起、企业专项
    @Headers({BaseUrlInterceptor.HEADERS_URL_JC, "tokenType:pc"})
    @POST("v1/app/groupBuy/addGroupBuying")
    Call<BaseEntity> getAddGroupBuying(@Body DemanderCompanyPublishBeans bean);

    //需方发起、企业专项
    @Headers({BaseUrlInterceptor.HEADERS_URL_JC, "tokenType:pc"})
    @GET("v1/app/user/address/list")
    Call<BaseEntity<ListResponse<List<WebSiteAddressEntity>>>> getNewUserAddress(@Query("limit") String limit, @Query("page") int page, @Query("siteType") int siteType);

    //集采-报价机遇
    @POST("v1/app/groupBuy/offerChance")
    Call<BaseEntity<ListResponse<List<JcChanceEntity>>>> offerChance(@Body Map map);

    //集采-加盟机遇
    @POST("v1/app/groupBuy/joinChance")
    Call<BaseEntity<ListResponse<List<JcChanceEntity>>>> joinChance(@Body Map map);

    //集采--我的报价列表
    @POST("v1/app/groupBuy/getMyOfferList")
    Call<BaseEntity<JcMyFactoryDataEntity<JcMyPriceListEntity>>> getMyPriceList(@Body Map map);

    //集采--我的报价删除
    @FormUrlEncoded
    @POST("v1/app/groupBuy/deleteMyOffer")
    Call<BaseEntity> deleteMyPriceList(@Field("groupbuyingNo") String no);

    @POST("v1/app/groupBuy/getMyOfferCountForStatus")
    Call<BaseEntity<List<JcCountEntity>>> myOfferBuyListCountForStatus(@Body Map map);

    //我的报价-删除
    @GET("v1/app/groupBuy/deleteMyOffer")
    Call<BaseEntity> getdeleteMyOffer(@Query("groupbuyingNo") String id);

    //集采--我的报价--退出报价
    @POST("v1/app/groupBuy/exitOffer")
    Call<BaseEntity> exitMyOffer(@Query("groupbuyingNo") String groupbuyingNo);


    //上传单个文件
    @Multipart
    @POST("v1/app/common/fileUpload")
    Call<BaseEntity> uploadFile(@PartMap Map<String, RequestBody> files);

    /**
     * 获取三级地址列表
     * @return
     */
    @GET("common/simpleArea.json")
    Call<BaseEntity<List<AddressEntity<List<AddressEntity<List<AddressEntity>>>>>>> getCityList();

    //获取客服IM账号
    @POST("v3/app/recruit/findCustomerServiceImAccount")
    Call<BaseEntity> getfindCustomerServiceImAccount(@Body Map map);

    //个人中心——我的加盟——获取我加盟的集采订单各状态数量 需方部分
    @POST("v1/app/groupBuy/getMyParticipantCountForStatus")
    Call<BaseEntity<List<JcCountEntity>>> getMyParticipantCountForStatus(@Body Map map);

    //个人中心——获取供方列表数量
    @POST("v1/app/groupBuy/productSaleRecordGetStatusCount")
    Call<BaseEntity<List<JcCountEntity>>> getMyProductListCountForStatus(@Query("goodsName") String goodsName, @Query("type") int type);

    //集采--个人中心-我加盟的-供方发起列表
    @POST("v1/app/groupBuy/appProductSaleRecordGetMyOrderList")
    Call<BaseEntity<JcMyFactoryDataEntity<JcMyJoinFactoryListEntity>>> getMyFactoryCenMyJoinList(@Body Map map);

    //个人中心——厂家集采——退出集采
    @POST("v1/app/groupBuy/appProductSaleOrderExit")
    Call<BaseEntity> quitFactoryJc(@Query("orderNo") String slipNo);

    //用户中心-我的加盟-供方发起删除
    @GET("v1/app/groupBuy/productSaleOrderDelete")
    Call<BaseEntity> productSaleOrderDelete(@Query("orderNo") String id);

    //集采--我的加盟--退出加盟
    @POST("v1/app/groupBuy/exitGroupbuy")
    Call<BaseEntity> exitMyJoin(@Query("participantNo") String participantNo);
    //集采--我的加盟--退出加盟
    @POST("v1/app/groupBuy/deleteJoin")
    Call<BaseEntity> deleteJoin(@Query("groupbuyingNo") String participantNo);
    //个人中心——需方发起——获取我的集采订单各状态数量（1.12）
    @POST("v1/app/groupBuy/getMyGroupBuyingCountForStatus")
    Call<BaseEntity<List<JcCountEntity>>> getMyGroupBuyingCountForStatus(@Body Map map);

    //个人中心——我的集采——停止集采
    @POST("v1/app/groupBuy/stopGroupBuy")
    Call<BaseEntity> stopMyJicai(@Query("no") String no);

    //个人中心-需方发起-删除集采订单信息接口
    @POST("v1/app/groupBuy/deleteGroupBuying")
    Call<BaseEntity> deleteGroupBuying(@Query("groupbuyingNo") String no);
    //机械/设备 发布时获取属性列表(categoryType:1为机械2为设备,firstCategoryNo:一级分类,secondCategoryNo:二级分类)
    @POST("v1/app/leasepublic/getAttributeList")
    Call<BaseEntity<List<FilterEntity<List<FilterEntity>>>>> getAttributeList(@Body Map map);

    //获取设备分类类型
    @GET("v1/app/equipment/categoryList")
    Call<BaseEntity<List<PublicTypeEntity<List<PublicTypeEntity>>>>> getDeviceType(@Query("categoryNo") String categoryNo);

    //获取机械类型
    @GET("v1/app/machinery/categoryList")
    Call<BaseEntity<List<PublicTypeEntity<List<PublicTypeEntity>>>>> getMachineOutType();

    //判断是否可以配置规格
    @Headers({BaseUrlInterceptor.HEADERS_URL_JC, "tokenType:pc"})
    @GET("v1/app/groupBuy/getSupplierGetParamVal")
    Call<BaseEntity<List<CommodityParamValBean>>> getCommodityParamVal(@Query("id") String cid3);

    //商品分类
    @FormUrlEncoded
    @POST("v1/app/user/goods/goodsCategory")
    Call<BaseEntity<List<MenuEntity<MenuEntity<MenuEntity>>>>> getGoodsCategory(@Field("areaCode") String areaCode);

    //集采--个人中心--厂家集采列表
    @POST("v1/app/groupBuy/productSaleRecordMySaleList")
    Call<BaseEntity<JcMyFactoryDataEntity<JcMyFactoryListEntity>>> getMyFactoryCenFaQiList(@Body Map map);

    //个人中心——厂家集采——停止集采
    @POST("v1/app/groupBuy/productSaleRecordUCenterStop")
    Call<BaseEntity> stopFactoryJc(@Query("no") String slipNo);

    //用户中心-供方发起-删除订单信息
    @GET("v1/app/groupBuy/productSaleRecordUCenterDelete")
    Call<BaseEntity> productSaleRecordUCenterDelete(@Query("no") String id);

    //品牌-列表
    @FormUrlEncoded
    @POST("v1/app/user/goods/brandList")
    Call<BaseEntity<List<BrandEntity>>> getBrandList(@Field("id") String id, @Field("text") String text, @Field("companyId") String companyId);

    //判断是否可以配置规格
    @FormUrlEncoded
    @POST("v1/app/user/goods/getSku")
    Call<BaseEntity<List<GetSkuEntity>>> getSku(@Field("id") String cid3);


    @POST("v1/app/groupBuy/mySupervise")
    Call<BaseEntity<JcMyFactoryDataEntity<JcMySupervisionEntity>>> getMySuperviseListData(@Body Map map);

    //集采首页——获取热词接口
    @GET("v1/app/groupBuy/getHotWords")
    Call<BaseEntity<List<String>>> getJiCaiHotWords(@Query("num") String num,@Query("type") String type);


    //集采首页——热词添加接口
    @GET("v1/app/groupBuy/addHotWords")
    Call<BaseEntity> addJiCaiHotWords(@Query("hotWords") String hotWords,@Query("type") String type);

    // 发票管理 列表
    @FormUrlEncoded
    @POST("v1/app/user/receipt/billList")
    Call<BaseEntity<ListResponse<List<InvoiceManagementEntity>>>> billList(@Field("companyNo") String cno);
}
